<?php

namespace app\admin\validate\crm;

use think\Validate;

/**
 * CRM字段配置验证器
 */
class CrmFieldConfigValidate extends Validate
{
    /**
     * 验证规则
     * @var array
     */
    protected $rule = [
        'group_id' => 'require|integer|gt:0',
        'name' => 'require|max:60|alphaDash',
        'label' => 'require|max:60',
        'type' => 'require|in:text,textarea,number,select,checkbox,radio,date,datetime,image,images,multi_select,map',
        'required' => 'in:0,1',
        'sort' => 'integer',
        'validation' => 'max:255',
        'options' => 'array',
    ];

    /**
     * 错误提示
     * @var array
     */
    protected $message = [
        'group_id.require' => '所属分组不能为空',
        'group_id.integer' => '所属分组必须是整数',
        'group_id.gt' => '所属分组必须大于0',
        'name.require' => '字段名称不能为空',
        'name.max' => '字段名称不能超过60个字符',
        'name.alphaDash' => '字段名称只能包含字母、数字和下划线',
        'label.require' => '字段标签不能为空',
        'label.max' => '字段标签不能超过60个字符',
        'type.require' => '字段类型不能为空',
        'type.in' => '字段类型不在允许范围内',
        'required.in' => '是否必填参数不正确',
        'sort.integer' => '排序值必须是整数',
        'validation.max' => '验证规则不能超过255个字符',
        'options.array' => '选项数据必须是数组格式',
    ];

    /**
     * 验证场景
     * @var array
     */
    protected $scene = [
        'save' => ['group_id', 'name', 'label', 'type', 'required', 'sort', 'validation', 'options'],
        'update' => ['group_id', 'name', 'label', 'type', 'required', 'sort', 'validation', 'options'],
    ];
}